// pages/car/car.js
let {
    homeHisearch
} = require("../../api/home")
let {
    getcartList
} = require("../../api/details");
let {
    deletebyId,
    updateById
} = require("../../api/car");


Page({

    /**
     * 页面的初始数据
     */
    data: {
        statusX: 0,
        slide: null,
        toggleChecked: false,
        total: 0,
        goodsNum: 0,
        goodsList: [
            // {
            //   id:1,
            //   name:"小米手机",
            //   img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/d9d7f31258a1f84a277918cecab14aaa.jpg?f=webp&w=516&h=420",
            //   price:"2999",
            //   priceOld:"3999",
            //   num:1,
            //   checked:false 
            // },
            // {
            //   id:2,
            //   name:"小米手机2",
            //   img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/d9d7f31258a1f84a277918cecab14aaa.jpg?f=webp&w=516&h=420",
            //   price:"2999",
            //   priceOld:"3999",
            //   num:1,
            //   checked:false
            // },
            // {
            //   id:3,
            //   name:"小米手机3",
            //   img:"https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/d9d7f31258a1f84a277918cecab14aaa.jpg?f=webp&w=516&h=420",
            //   price:"2999",
            //   priceOld:"3999",
            //   num:1,
            //   checked:false
            // },
        ],
        // 商品推荐
        linkLists: []


    },
    // 跳转页面
    goPay() {
        // 判断是否登录
        let login = wx.getStorageSync('userInfo');
        if (!login) {
            wx.showToast({
                title: '登录后操作!',
                icon: "none",
                duration: 2000
            })
            setTimeout(() => {
                wx.switchTab({
                    url: '/pages/my/my',
                })
            }, 2000)
            return;
        }



        // 判断是否有数据
        //   判断购物车是否选中商品
        let dataLength = this.data.goodsList.filter(item => item.checked);
        console.log(dataLength.length);
        if (dataLength.length >= 1) { //加入购物车数量
            wx.navigateTo({
                url: '/pages/pay/pay',
            })
        } else {
            wx.showToast({
                title: '请选择商品。',
                icon: "none",
                duration: 2000
            })
        }



    },

    // 滑动效果
    touchstart(e) {
        // console.log(e);
        // console.log(this.data.statusX);
        this.data.statusX = e.changedTouches[0].clientX; //开始位置
    },
    touchend(e) {
        console.log(e.target.dataset.id);
        let clientX = e.changedTouches[0].clientX; //结束位置
        if (this.data.statusX - clientX > 0) {
            console.log("触发滑动效果");
            this.setData({
                slide: e.target.dataset.id
            })
        } else {
            console.log("不触发滑动效果");
            this.setData({
                slide: null
            })
        }
    },
    // 删除数据
    del(e) {
        let id = e.target.dataset.id; //当前数据的id
        // let index = this.data.goodsList.findIndex(item => item.id == id); //下标
        // this.data.goodsList.splice(index, 1); //删除静态数据，不会更新页面
        deletebyId(id).then(data => {
            console.log("删除数据", data);
            // this.onLoad();
            this.onShow();
            this.totalData(); //计算总价格
        })

        // this.setData(this.data);
        this.totalData(); //计算总价格
    },
    // 数量加一
    add(e) {

        let id = e.target.dataset.id;
        let index = this.data.goodsList.findIndex(item => item.id == id); //下标
        // 第一种写法
        // let num = this.data.goodsList[index].num + 1;
        // this.data.goodsList[index].num = num;//修改数据
        // this.setData(this.data);
        // console.log("数量加一", e);
        // 上传到数据库

        // 第二种写法
        // this.setData({
        //     ["goodsList[" + index + "].num"]: this.data.goodsList[index].num + 1,
        //     slide: null
        // })
        // this.totalData(); //计算总价格
        this.Count(id, index, '+')
    },
    // 数量减一
    sub(e) {
        let id = e.target.dataset.id;
        let index = this.data.goodsList.findIndex(item => item.id == id); //下标
        // let num = this.data.goodsList[index].num - 1;
        // this.setData({
        //     ["goodsList[" + index + "].num"]: (num < 1 ? 1 : num),
        //     slide: null
        // })
        this.Count(id, index, '-')
        this.totalData(); //计算总价格
    },

    // 加一减一单选全选功能方法
    Count(id, index, add) {
        if (add == '+') {
            console.log("加法");
            let putlist = {
                id: id,
                num: this.data.goodsList[index].num + 1,
                checked: this.data.goodsList[index].checked == true ? 1 : 0
            }
            // console.log(putlist);
            updateById(putlist).then(data => {
                console.log(data);
                this.onShow()
                this.totalData(); //计算总价格
            })
        }
        if (add == '-') {
            console.log("减法");
            let putlist = {
                id: id,
                num: this.data.goodsList[index].num - 1 <= 1 ? 1 : num,//不小于0
                checked: this.data.goodsList[index].checked == true ? 1 : 0
            }
            // console.log(putlist);
            updateById(putlist).then(data => {
                console.log(data);
                this.onShow()
                this.totalData(); //计算总价格
            })
        }
        if (add == 'click') {
            console.log("单选");
            let putlist = {
                id: id,
                num: this.data.goodsList[index].num,
                checked: !this.data.goodsList[index].checked
            }
            updateById(putlist).then(data => {
                console.log(data);
                this.onShow()
                this.totalData(); //计算总价格
            })
        }

    },



    // 单选功能
    checkboxClick(e) {
        let id = e.target.dataset.id;
        let index = this.data.goodsList.findIndex(item => item.id == id); //下标

        this.Count(id,index,'click')

        // this.setData({
        //     ["goodsList[" + index + "].checked"]: !this.data.goodsList[index].checked,
        //     slide: null
        // })
        // this.totalData(); //计算总价格

        // 重新计算全框
        this.idToggleBox();

    },
    // 全选功能
    togglebox() {
        let checked = !this.data.toggleChecked;

        this.data.goodsList.forEach(item => {
            let putlist = {
                id: item.id,
                num: item.num,
                checked: item.checked = checked
            }
            updateById(putlist).then(data => {
                console.log(data);
                this.onShow()
                this.totalData(); //计算总价格
            })
            // item.checked = checked
            // console.log(putlist);
        })


        this.setData({
            "goodsList": this.data.goodsList,
            "toggleChecked": checked,
            slide: null
        })
        this.totalData(); //计算总价格
    },
    // 判断是否全选
    idToggleBox() {
        let checked = this.data.goodsList.every(item => item.checked); //只要一个没有选中false
        this.setData({
            "toggleChecked": checked,
            slide: null
        })
    },
    // 计算总价格
    totalData() {
        let num = 0;
        let data = this.data.goodsList.reduce((total, item) => {
            if (item.checked) {
                num++;
                return total += item.price * item.num;
            } else {
                return total
            }
        }, 0)
        this.setData({
            total: data,
            goodsNum: num
        })
        // console.log("触发价格计算", data);
    },


    // 数据请求功能
    InfoData() {
        //   获取购物车数据
        getcartList().then(data => {
            let goodsCarList = data.data;
            // console.log("购物车数据", data.data);
            let list_ = []
            // console.log("购物车缓存数据", wx.getStorageSync('goodsCarList'));
            goodsCarList.forEach(item => {
                // console.log(item);
                list_.push({
                    id: item.id,
                    name: item.name,
                    img: JSON.parse('[' + item.img + ']').map(items => items.url).toString(), //数据处理
                    price: item.price,
                    priceOld: (item.price + new Number(item.priceOld)),
                    num: item.num,
                    checked: item.checked
                })
            })
            this.setData({
                goodsList: list_
            })
            // console.log("goodsCarList", list_);
            this.idToggleBox(); //全选按钮
            this.totalData(); //总数量
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        homeHisearch().then(data => {
            console.log(data.data)
            let list_v2 = data.data.list_v2;
            let listsArr = [];
            list_v2.forEach(item => {
                listsArr.push({
                    id: item.body.product_id,
                    img: item.body.image,
                    name: item.body.name,
                    price: item.body.price,
                    priceOld: item.body.market_price
                })
            })
            this.setData({
                linkLists: listsArr
            })
            console.log("数据列表==>", this.data.linkLists);

        })
        this.totalData(); //计算总价格
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        this.totalData(); //计算总价格
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

        //   获取购物车数据
        this.InfoData()

        // this.totalData(); //总数量


    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {


        // wx.setStorageSync('goodsCarList', this.data.goodsList)
        // console.log("上传本地存储",wx.setStorageSync('goodsCarList', this.data.goodsList));
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})